package delphorm.web.controller;



import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import delphorm.entite.personne.DroitGroupe;
import delphorm.service.personne.IGroupeCollectif;
import delphorm.service.personne.IPersonne;



public class AjouterUtilisateurGroupeCollectif extends SimpleFormController {


	private IGroupeCollectif serviceGroupeCollectif;
	private IPersonne servicePersonne;
	private static final String[] ALLOWED_PROPERTIES = {"supprimerGroupe",
		"modifierGroupe","ajouterUtilisateurGroupe",
		"supprimerUtilisateurGroupe","voirUtilisateursGroupe",
		"modifierUtilisateursGroupe","supprimerUtilisateursGroupe"};
	
	
	protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
		super.initBinder(request, binder);
		binder.setAllowedFields(ALLOWED_PROPERTIES);
	}

	
	protected Object formBackingObject(HttpServletRequest request)
	{
		//récupère le formulaire dans la session
		DroitGroupe formulaire = (DroitGroupe)request.getSession().getAttribute("formulaire");
		
		if(formulaire == null)
		{
			Long idutilisateur;
			Long idgroupe;
			String stridgroupe = request.getParameter("idgroupecollectif");
			idgroupe = new Long(Long.parseLong(stridgroupe));
			
			
			String stridutilisateur = request.getParameter("idutilisateur");	
			idutilisateur = new Long(Long.parseLong(stridutilisateur));
			
			formulaire = serviceGroupeCollectif.chercherDroitGroupeParId(idgroupe, idutilisateur);
			if(formulaire == null)
			{
				formulaire = new DroitGroupe();
				formulaire.getGroupe().setId(idgroupe);
				formulaire.getUtilisateur().setId(idutilisateur);
			}	
			
		}
		return formulaire;
	}

	protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object formulaire, BindException exceptions) throws Exception {
		
		//enregistre
		DroitGroupe droitgroupe = (DroitGroupe)formulaire;
		
		serviceGroupeCollectif.enregistrerDroitGroupe(droitgroupe);
		
		return new ModelAndView(getSuccessView(),null);
	}

	public IGroupeCollectif getServiceGroupeCollectif() {
		return serviceGroupeCollectif;
	}

	public void setServiceGroupeCollectif(IGroupeCollectif serviceGroupeCollectif) {
		this.serviceGroupeCollectif = serviceGroupeCollectif;
	}

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}
}
